﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Script.Services;
using System.Data;

namespace AppGestionRequerimientos
{
    public partial class AprobarRequerimientos : System.Web.UI.Page
    {
        AccesosService.GRUsuario usuario;

        protected void Page_Load(object sender, EventArgs e)
        {
            usuario = (AppGestionRequerimientos.AccesosService.GRUsuario)Session["Usuario"];
            if (!Page.IsPostBack)
            {
                AccesosService.AccesosServicesClient proxy = new AccesosService.AccesosServicesClient();
                List<AccesosService.GRUsuario> ListUsuarios = null;
                ListUsuarios = proxy.ListarNombres().ToList();
                cboUsuario.Items.Clear();
                cboUsuario.Items.Add("---Seleccione Usuario---");
                cboUsuario.DataSource = ListUsuarios;
                cboUsuario.DataBind();                
                proxy = null;
            }
        }
       
        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            int NroReq = 0;
            int CodUsu = 0;
            DateTime FecIni;
            DateTime FecFin;
            try
            {
                if (txtNroReq.Text.Trim() == "")
                    NroReq = 0;
                else
                    NroReq = Convert.ToInt32(txtNroReq.Text.Trim());

                if (cboUsuario.SelectedItem.ToString() == "---Seleccione Usuario---")
                    CodUsu = 0;
                else
                    CodUsu = Convert.ToInt32(cboUsuario.SelectedValue);

                if (txtFechaInicio.Text.Trim() == "")
                    FecIni = Convert.ToDateTime("01/01/1900 00:00");
                else
                    FecIni = Convert.ToDateTime(txtFechaInicio.Text.Trim());

                if (txtFechaFin.Text.Trim() == "")
                    FecFin = Convert.ToDateTime("01/01/1900 00:00");
                else
                    FecFin = Convert.ToDateTime(txtFechaFin.Text.Trim());

                RequerimientosService.ServiceRequerimientoClient proxy = new RequerimientosService.ServiceRequerimientoClient();
                List<RequerimientosService.GRMaeRequerimiento> ListRequerimientos = new List<RequerimientosService.GRMaeRequerimiento>();

                ListRequerimientos = proxy.ConsultarRequerimientosPorAprobar(NroReq, CodUsu, FecIni, FecFin).ToList();

                if (ListRequerimientos.Count > 0)
                {
                    AccesosService.AccesosServicesClient proxyUser = new AccesosService.AccesosServicesClient();
                    foreach (RequerimientosService.GRMaeRequerimiento item in ListRequerimientos)
                    {
                        item.vNomUsuReg = proxyUser.Obtener(item.iCodUsuReg).vLogUsu;
                        item.vNomUsuA = proxyUser.Obtener(item.iCodUsuA).vLogUsu;
                    }
                    grillaEncontrados.DataSource = ListRequerimientos;
                    grillaEncontrados.DataBind();
                }
                else {
                    hrRespuesta.Value = "2";
                }
                
            }
            catch { }
        }

        protected void grillaEncontrados_SelectedIndexChanged(object sender, EventArgs e)
        {
            GridViewRow row = grillaEncontrados.Rows[grillaEncontrados.SelectedIndex];
            hdNumReq.Value = row.Cells[0].Text.ToString();            
            InitializeEditPopUp(Convert.ToInt32(hdNumReq.Value));                        
        }

        protected void grillaEncontrados_PreRender(object sender, EventArgs e)
        {
            if (grillaEncontrados.Rows.Count > 0)
            {
                grillaEncontrados.UseAccessibleHeader = true;
                grillaEncontrados.HeaderRow.TableSection = TableRowSection.TableHeader;
                grillaEncontrados.FooterRow.TableSection = TableRowSection.TableFooter;
            }
        }
        
        
        private void InitializeEditPopUp(int nroReq)
        {
            try
            {
                RequerimientosService.ServiceRequerimientoClient proxy = new RequerimientosService.ServiceRequerimientoClient();
                List<RequerimientosService.GRDetRequerimiento> ListDetalleReq = new List<RequerimientosService.GRDetRequerimiento>();
                ListDetalleReq = proxy.ObtenerDetalleRequerimiento(nroReq).ToList();

                AccesosService.AccesosServicesClient proxyUser = new AccesosService.AccesosServicesClient();
                MaterialesService.ServiceMaterialesClient proxyMat = new MaterialesService.ServiceMaterialesClient();
                foreach (RequerimientosService.GRDetRequerimiento item in ListDetalleReq)
                {
                    item.vNomUsu = proxyUser.Obtener(Convert.ToInt32(item.iCodUsu)).vLogUsu;
                    item.vNomMat = proxyMat.ObtenerDatosMateriales(Convert.ToInt32(item.iCodMat)).vNomMat;
                }
                
                gdvDetalle.DataSource = ListDetalleReq;
                gdvDetalle.DataBind();
            }
            catch
            {
            }

        }

        protected void gdvDetalle_PreRender(object sender, EventArgs e)
        {
            if (gdvDetalle.Rows.Count > 0)
            {
                gdvDetalle.UseAccessibleHeader = true;
                gdvDetalle.HeaderRow.TableSection = TableRowSection.TableHeader;
                gdvDetalle.FooterRow.TableSection = TableRowSection.TableFooter;
            }
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            try
            {
                RequerimientosService.ServiceRequerimientoClient proxy = new RequerimientosService.ServiceRequerimientoClient();
                RequerimientosService.GRMaeRequerimiento cabecera = new RequerimientosService.GRMaeRequerimiento();
                RequerimientosService.GRMovRequerimiento movimiento = new RequerimientosService.GRMovRequerimiento();
                RequerimientosService.GREstadoReq estado = new RequerimientosService.GREstadoReq();
                estado = proxy.ObtenerDatosEstado(2);

                cabecera.iNumReq = Convert.ToInt32(hdNumReq.Value);
                switch( ddlAprobar.SelectedIndex)                 
                {
                    case 0:
                        cabecera.bAprobado = false;
                        break;
                    case  1:
                        cabecera.bAprobado = true;
                        break;
                    case 2:
                     cabecera.bAprobado = false;
                     break; 
                }
                cabecera.iCodUsuApro =usuario.iCodUsu;
                cabecera.iCodUsuA = usuario.iCodUsu;
                cabecera.vNomTer = Request.ServerVariables["REMOTE_ADDR"].ToString();

                movimiento.iNumReq = Convert.ToInt32(hdNumReq.Value);
                movimiento.iCodEstReq = estado.iCodEstReq;
                movimiento.dtFecMov = DateTime.Now;
                movimiento.vObsMov = txtObservaciones.Text.Trim();
                movimiento.iCodUsuA=usuario.iCodUsu;
                movimiento.vNomTer = Request.ServerVariables["REMOTE_ADDR"].ToString();

                if (proxy.AprobarRequerimiento(cabecera,movimiento)) {
                    hrRespuesta.Value = "1";
                }                
            }
            catch {
                hrRespuesta.Value = "0";
            }
        }
            

    }
}